package it.mercatino.catalogo;

import it.mercatino.categorie.CategoriaUtil;
import it.mercatino.hibernate.Articolo;
import it.mercatino.hibernate.Categoria;
import it.mercatino.hibernate.Utente;
import it.mercatino.utenti.UtenteUtil;

import java.util.List;

import com.opensymphony.xwork2.ActionSupport;

/**
 * Action che viene richiamata quando viene effettuata una ricerca.
 * 
 * @author Marco
 *
 */
public class RicercaAction extends ActionSupport {

	private static final long serialVersionUID = 1L;
	
	private List<Articolo> articoli;
	
	private String searchArticolo;
	private String searchCategoria;
	private String searchMin;
	private String searchMax;
	private String searchInserzionista;
	
	private Categoria objCategoria;
	private Utente objInserzionista;
	
	/**
	 * Effettua la ricerca.
	 * 
	 * @return "success", se vengono trovati risultati.<br>"no_results", se non
	 * viene trovato alcun risultato.
	 */
	public String execute() {
		float min = 0;
		float max = 0;
		try {
			if (!searchMin.equals(""))
				min = Float.valueOf(searchMin);
			if (!searchMax.equals(""))
				max = Float.valueOf(searchMax);
		} catch (NumberFormatException e) {			
			return INPUT;
		}
		int intCategoria = Integer.parseInt(searchCategoria);
		int intInserzionista = Integer.parseInt(searchInserzionista);
		objCategoria = CategoriaUtil.getInstance().getCategoria(intCategoria);
		objInserzionista = UtenteUtil.getInstance().getUtente(intInserzionista);
		articoli = CatalogoUtil.getInstance().search(searchArticolo, intCategoria, searchMin, searchMax, intInserzionista);
		if (articoli == null || articoli.isEmpty())
			return "no_results";
		else
			return SUCCESS;
	}

	/**
	 * @return the articoli
	 */
	public List<Articolo> getArticoli() {
		return articoli;
	}

	/**
	 * @param articoli the articoli to set
	 */
	public void setArticoli(List<Articolo> articoli) {
		this.articoli = articoli;
	}

	/**
	 * @return the searchArticolo
	 */
	public String getSearchArticolo() {
		return searchArticolo;
	}

	/**
	 * @param searchArticolo the searchArticolo to set
	 */
	public void setSearchArticolo(String searchArticolo) {
		this.searchArticolo = searchArticolo;
	}

	/**
	 * @return the searchCategoria
	 */
	public String getSearchCategoria() {
		return searchCategoria;
	}

	/**
	 * @param searchCategoria the searchCategoria to set
	 */
	public void setSearchCategoria(String searchCategoria) {
		this.searchCategoria = searchCategoria;
	}

	/**
	 * @return the searchMin
	 */
	public String getSearchMin() {
		return searchMin;
	}

	/**
	 * @param searchMin the searchMin to set
	 */
	public void setSearchMin(String searchMin) {
		this.searchMin = searchMin;
	}

	/**
	 * @return the searchMax
	 */
	public String getSearchMax() {
		return searchMax;
	}

	/**
	 * @param searchMax the searchMax to set
	 */
	public void setSearchMax(String searchMax) {
		this.searchMax = searchMax;
	}

	/**
	 * @return the searchInserzionista
	 */
	public String getSearchInserzionista() {
		return searchInserzionista;
	}

	/**
	 * @param searchInserzionista the searchInserzionista to set
	 */
	public void setSearchInserzionista(String searchInserzionista) {
		this.searchInserzionista = searchInserzionista;
	}

	/**
	 * @return the objCategoria
	 */
	public Categoria getObjCategoria() {
		return objCategoria;
	}

	/**
	 * @param objCategoria the objCategoria to set
	 */
	public void setObjCategoria(Categoria objCategoria) {
		this.objCategoria = objCategoria;
	}

	/**
	 * @return the objInserzionista
	 */
	public Utente getObjInserzionista() {
		return objInserzionista;
	}

	/**
	 * @param objInserzionista the objInserzionista to set
	 */
	public void setObjInserzionista(Utente objInserzionista) {
		this.objInserzionista = objInserzionista;
	}

}
